package com.situ.springboot.pattern;

import java.io.Serializable;

// 饿汉式
// 要想能转成字节，在磁盘存储或者网络传输，都要实现Serializable接口
public class Singleton1 implements Serializable {
    private static final Singleton1 INSTANCE = new Singleton1();

    private Singleton1() {
        // 预防反射创建单利的情况
        if (INSTANCE != null) {
            throw new RuntimeException("单例对象不能重复创建");
        }
        System.out.println("private Singleton1()");
    }

    public static Singleton1 getInstance() {
        return INSTANCE;
    }

    // 调用静态方法会触发类的加载，会导致INSTANCE对象的初始化
    public static void staticMethod() {
        System.out.println("staticMethod()");
    }

    // 预防反序列化创建对象，这个方法名字是固定的
    public Object readResolve() {
        return INSTANCE;
    }
}
